From 1b05474979b35624d6b3f2619673b02863a562fb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 19 Dec 2017 11:37:05 -0500 Subject: [PATCH] font chooser: Simplify some code Instead of separate handlers, just keep a single handler for both row-inserted and row-deleted. Slightly less work that way. --- gtk/gtkfontchooserwidget.c | 35 ++++++++++------------------------ gtk/ui/gtkfontchooserwidget.ui | 4 ++-- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index 0803b43b04..b8ee15f602 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -547,19 +547,7 @@ gtk_font_chooser_widget_update_preview_attributes (GtkFontChooserWidget *fontcho } static void -row_inserted_cb (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) -{ - GtkFontChooserWidget *fontchooser = user_data; - GtkFontChooserWidgetPrivate *priv = fontchooser->priv; - - gtk_stack_set_visible_child_name (GTK_STACK (priv->list_stack), "list"); -} - -static void -row_deleted_cb (GtkTreeModel *model, +rows_changed_cb (GtkTreeModel *model, GtkTreePath *path, gpointer user_data) { @@ -568,6 +556,8 @@ row_deleted_cb (GtkTreeModel *model, if (gtk_tree_model_iter_n_children (model, NULL) == 0) gtk_stack_set_visible_child_name (GTK_STACK (priv->list_stack), "empty"); + else + gtk_stack_set_visible_child_name (GTK_STACK (priv->list_stack), "list"); } static void @@ -670,9 +660,7 @@ gtk_font_chooser_widget_class_init (GtkFontChooserWidgetClass *klass) gtk_widget_class_bind_template_callback (widget_class, row_activated_cb); gtk_widget_class_bind_template_callback (widget_class, gtk_font_chooser_widget_set_cell_size); gtk_widget_class_bind_template_callback (widget_class, resize_by_scroll_cb); - gtk_widget_class_bind_template_callback (widget_class, row_deleted_cb); - gtk_widget_class_bind_template_callback (widget_class, row_inserted_cb); - gtk_widget_class_bind_template_callback (widget_class, row_deleted_cb); + gtk_widget_class_bind_template_callback (widget_class, rows_changed_cb); gtk_widget_class_bind_template_callback (widget_class, size_change_cb); gtk_widget_class_bind_template_callback (widget_class, output_cb); @@ -788,10 +776,8 @@ gtk_font_chooser_widget_load_fonts (GtkFontChooserWidget *fontchooser, qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families); g_signal_handlers_block_by_func (priv->family_face_list, cursor_changed_cb, fontchooser); - g_signal_handlers_block_by_func (priv->filter_model, row_deleted_cb, fontchooser); + g_signal_handlers_block_by_func (priv->filter_model, rows_changed_cb, fontchooser); gtk_list_store_clear (list_store); - g_signal_handlers_unblock_by_func (priv->filter_model, row_deleted_cb, fontchooser); - g_signal_handlers_unblock_by_func (priv->family_face_list, cursor_changed_cb, fontchooser); /* Iterate over families and faces */ for (i = 0; i < n_families; i++) @@ -829,17 +815,16 @@ gtk_font_chooser_widget_load_fonts (GtkFontChooserWidget *fontchooser, g_free (families); + rows_changed_cb (priv->filter_model, NULL, fontchooser); + + g_signal_handlers_unblock_by_func (priv->filter_model, rows_changed_cb, fontchooser); + g_signal_handlers_unblock_by_func (priv->family_face_list, cursor_changed_cb, fontchooser); + /* now make sure the font list looks right */ if (!gtk_font_chooser_widget_find_font (fontchooser, priv->font_desc, &priv->font_iter)) memset (&priv->font_iter, 0, sizeof (GtkTreeIter)); gtk_font_chooser_widget_ensure_selection (fontchooser); - - /* We block row_deleted_cb when reloading, now manually switch to the - * "empty" pane if the filter model is empty. - */ - if (gtk_tree_model_iter_n_children (priv->filter_model, NULL) == 0) - gtk_stack_set_visible_child_name (GTK_STACK (priv->list_stack), "empty"); } static gboolean diff --git a/gtk/ui/gtkfontchooserwidget.ui b/gtk/ui/gtkfontchooserwidget.ui index 7bf0fc951f..8a3bf50e57 100644 --- a/gtk/ui/gtkfontchooserwidget.ui +++ b/gtk/ui/gtkfontchooserwidget.ui @@ -15,8 +15,8 @@ model - - + + 100 -- 2.30.2